package com.msh.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.msh.contract.VendoutResp;
import com.msh.entity.OrderEntity;
import com.msh.viewmodel.CreateOrder;
import com.msh.viewmodel.OrderViewModel;
import com.msh.viewmodel.Pager;

import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

public interface OrderService extends IService<OrderEntity> {


    /**
     * 微信小程序支付创建订单
     * @param createOrder
     * @return
     */
    OrderEntity createOrder(CreateOrder createOrder) throws IOException;

    /**
     * 微信支付完成
     * @param orderEntity
     * @return
     */
    boolean payComplete(OrderEntity orderEntity);

    /**
     * 处理出货结果
     * @param vendoutResp 出货请求参数
     * @return
     */
    boolean vendoutResult(VendoutResp vendoutResp);



    /**
     * 通过订单编号获取订单实体
     * @param orderNo
     * @return
     */
    OrderEntity getByOrderNo(String orderNo);

    /**
     * 取消订单
     * @param orderNo
     * @return
     */
    Boolean cancel(String orderNo);

    /**
     * 查询订单
     * @param pageIndex
     * @param pageSize
     * @param orderNo
     * @param openId
     * @param startDate
     * @param endDate
     * @return
     */
    Pager<OrderViewModel> search(Integer pageIndex, Integer pageSize, String orderNo, String openId, LocalDate startDate, LocalDate endDate);

    /**
     * 获取商圈下销量最好的前10商品
     * @param businessId
     * @return
     */
    List<Long> getTop10Sku(Integer businessId);

    /**
     * 获取指定时间范围内的总分成
     * @param start
     * @param end
     * @return
     */
    long getTotalBill(LocalDateTime start, LocalDateTime end);
}
